package com.bookocean.controller.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import java.time.LocalDateTime;

/**
 * 奖励数据传输对象
 * 
 * @author BookOcean
 * @since 2024-01-01
 */
@Data
public class RewardDto {
    
    /**
     * 奖励ID
     */
    private Long rewardId;
    
    /**
     * 奖励名称
     */
    @NotBlank(message = "奖励名称不能为空")
    private String name;
    
    /**
     * 奖励描述
     */
    private String description;
    
    /**
     * 奖励类型
     */
    @NotBlank(message = "奖励类型不能为空")
    private String type;
    
    /**
     * 所需积分
     */
    @NotNull(message = "所需积分不能为空")
    @Positive(message = "所需积分必须大于0")
    private Integer pointsCost;
    
    /**
     * 是否启用
     */
    private Boolean isActive;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    
    /**
     * 是否可兑换（基于用户当前积分）
     */
    private Boolean canRedeem;
    
    /**
     * 用户当前积分
     */
    private Integer userCurrentPoints;
}
